package cl.zeke.cursos.jsf2spring3jpa2.vista.managedbeans.editar_perfil;

import cl.zeke.cursos.jsf2spring3jpa2.negocio.entities.Perfil;
import cl.zeke.cursos.jsf2spring3jpa2.negocio.exceptions.LogicaNegocioException;
import cl.zeke.cursos.jsf2spring3jpa2.negocio.services.PerfilService;
import cl.zeke.cursos.jsf2spring3jpa2.util.ConstantesUtil;
import cl.zeke.java.commons.jsf2.Jsf2Util;
import java.io.Serializable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

/**
 *
 * @author eduardo
*/
@Component
@Scope("flow")
public class EditarPerfilBean implements Serializable {
    
    private Logger log = LoggerFactory.getLogger(EditarPerfilBean.class);
    
    private Perfil perfil;
    
    private boolean modoEditar;
    
    @Autowired
    private PerfilService perfilService;
    
    public void iniciar() {
        log.info("iniciando editar perfil");
        perfil = (Perfil) Jsf2Util.getSpElAttribute("flowScope.perfil");
        
        if(perfil != null) {
            modoEditar = true;
        }
        else {
            modoEditar = false;
            perfil = new Perfil();
        }
        
    }
    
    public String guardar() {
        log.info("guardando perfil");
        try {
            perfil = perfilService.guardarPerfil(perfil);
            Jsf2Util.addInfoMessage(ConstantesUtil.MSJ_EXITO);
            return "exito";
        }catch(LogicaNegocioException ex) {
            Jsf2Util.addErrorMessage(ex.getMessage());
            return null;
        }catch(Exception ex) {
            Jsf2Util.addErrorMessage(ConstantesUtil.MSJ_ERROR_INTERNO);
            return null;
        }
    }

    public Perfil getPerfil() {
        return perfil;
    }

    public void setPerfil(Perfil perfil) {
        this.perfil = perfil;
    }

    public boolean isModoEditar() {
        return modoEditar;
    }

}
